package com.ruoyi.position.service.impl;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; //添加
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.position.mapper.RyssMapper;
import com.ruoyi.position.domain.Ryss;
import com.ruoyi.position.service.IRyssService;

/**
 * 人员定位-实时数据Service业务层处理
 *
 * @author hcc
 * @date 2024-10-31
 */
@Service
public class RyssServiceImpl extends ServiceImpl<RyssMapper, Ryss> implements IRyssService //修改
{
    @Autowired
    private RyssMapper ryssMapper;

    /**
     * 查询人员定位-实时数据
     *
     * @param positionRealtimeId 人员定位-实时数据主键
     * @return 人员定位-实时数据
     */
    @Override
    public Ryss selectRyssByPositionRealtimeId(String positionRealtimeId)
    {
        return ryssMapper.selectRyssByPositionRealtimeId(positionRealtimeId);
    }

    /**
     * 查询人员定位-实时数据列表
     *
     * @param ryss 人员定位-实时数据
     * @return 人员定位-实时数据
     */
    @Override
    public List<Ryss> selectRyssList(Ryss ryss)
    {
        return ryssMapper.selectRyssList(ryss);
    }

    /**
     * 新增人员定位-实时数据
     *
     * @param ryss 人员定位-实时数据
     * @return 结果
     */
    @Override
    public int insertRyss(Ryss ryss)
    {
        return ryssMapper.insertRyss(ryss);
    }

    /**
     * 修改人员定位-实时数据
     *
     * @param ryss 人员定位-实时数据
     * @return 结果
     */
    @Override
    public int updateRyss(Ryss ryss)
    {
        return ryssMapper.updateRyss(ryss);
    }

    /**
     * 批量删除人员定位-实时数据
     *
     * @param positionRealtimeIds 需要删除的人员定位-实时数据主键
     * @return 结果
     */
    @Override
    public int deleteRyssByPositionRealtimeIds(String[] positionRealtimeIds)
    {
        return ryssMapper.deleteRyssByPositionRealtimeIds(positionRealtimeIds);
    }

    /**
     * 删除人员定位-实时数据信息
     *
     * @param positionRealtimeId 人员定位-实时数据主键
     * @return 结果
     */
    @Override
    public int deleteRyssByPositionRealtimeId(String positionRealtimeId)
    {
        return ryssMapper.deleteRyssByPositionRealtimeId(positionRealtimeId);
    }

    @Override
    public List<Ryss> selectRyssListByQYCode(Ryss ryss) {
        return ryssMapper.selectRyssListByQYCode(ryss);
    }

    @Override
    public List<Ryss> selectRyssListALLSS(Ryss ryss) {
        // 获取当前时间的 Calendar 实例
        Calendar calendar = Calendar.getInstance();
        Date nowTime=calendar.getTime();
        // 计算 10 分钟前的时间
        calendar.add(Calendar.MINUTE, -10);
        Date tenMinutesAgo = calendar.getTime();
        List<Ryss> ryssList=ryssMapper.selectRyssListALLSS(ryss);
        // 初始化一个 ArrayList 来存储过滤后的结果（虽然这不是必需的，但可以避免潜在的并发修改异常）
        List<Ryss> filteredList = new ArrayList<>();
        // 使用传统的 for 循环来过滤数据（或者您可以使用 Iterator，但 Stream API 不直接支持 Date 的比较）
        for (int i = 0; i < ryssList.size(); i++) {
            Ryss ryss1 = ryssList.get(i);
            if (ryss1.getUpdateTime().before(nowTime) && ryss1.getUpdateTime().after(tenMinutesAgo)) {
                // 如果 dateTime 在 10 分钟前之前，则移除该元素
                filteredList.add(ryss1);
            }
        }
        return filteredList;
    }

    @Override
    public List<Ryss> selectRyssListByJZCode(Ryss ryss) {
        return ryssMapper.selectRyssListByJZCode(ryss);
    }

    @Override
    public List<Ryss> listQYHistory(Ryss ryss) {
        return ryssMapper.listQYHistory(ryss);
    }

    @Override
    public List<Ryss> listJZHistory(Ryss ryss) {
        return ryssMapper.listJZHistory(ryss);
    }

    @Override
    public List<Ryss> listArrHistory(Ryss ryss) {
        return ryssMapper.listArrHistory(ryss);
    }

    @Override
    public Ryss selectRyssByPositionPersonCode(String positionPersonCode) {
        return ryssMapper.selectRyssByPositionPersonCode(positionPersonCode);
    }

//    @Override
//    public List<Ryss> getAll() {
//
//        return ryssMapper.getAll();
//    }
@Override
public int getAll() {
    return ryssMapper.getAll();
}

    @Override
    public int getLd() {
        return ryssMapper.getLd();
    }


    @Override
    public int getNowLd() {
        return ryssMapper.getNowLd();
    }
}
